package persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import model.Livro;

public class LivroDaoImpl implements LivroDao {
	Connection c;

	public LivroDaoImpl() {
		GenericDao gDao = new GenericDao();
		c = gDao.getConnection();
	}

	@Override
	public void salvaLivro(Livro livro) throws SQLException {
		String sql = "INSERT INTO livros VALUES (?,?,?,?,?,?,?)";
		PreparedStatement ps = c.prepareStatement(sql);
		ps.setInt(1, livro.getIdLivro());
		ps.setInt(2, livro.getISBN());
		ps.setString(3, livro.getNomeLivro());
		// ps.setDate(4, livro.getDataEntrada());
		ps.setInt(5, livro.getNumPaginas());
		ps.setInt(6, livro.getEdicao());
		ps.setInt(7, livro.getVolume());

		ps.execute();
		ps.close();

	}

	@Override
	public void editaLivro(Livro livro) throws SQLException {
		String sql = "UPDATE livros SET ISBN = ?, " + "nomeLivro = ?, "
				+ "dataEntrada = ?, " + "numPaginas = ?, " + "edicao = ?, "
				+ "volume = ? WHERE idLivro = ?";
		PreparedStatement ps = c.prepareStatement(sql);

		ps.setInt(1, livro.getISBN());
		ps.setString(2, livro.getNomeLivro());
		// ps.setDate(3, livro.getDataEntrada());
		ps.setInt(4, livro.getNumPaginas());
		ps.setInt(5, livro.getEdicao());
		ps.setInt(6, livro.getVolume());
		ps.setInt(7, livro.getIdLivro());

		ps.execute();
		ps.close();

	}

	@Override
	public void excluiLivro(Livro livro) throws SQLException {
		String sql = "DELETE livros WHERE idLivro = ?";
		PreparedStatement ps = c.prepareStatement(sql);
		ps.setInt(1, livro.getIdLivro());
		ps.execute();
		ps.close();

	}

	@Override
	public Livro pesquisaLivro(Livro livro) throws SQLException {
		Livro l = new Livro();
		String sql = "SELECT idLivro, ISBN, nomeLivro, "
				+ "dataEntrada, numPaginas, edicao, volume FROM livros "
				+ "WHERE idLivro = ?";
		PreparedStatement ps = c.prepareStatement(sql);
		ps.setInt(1, livro.getIdLivro());
		ResultSet rs = ps.executeQuery();
		if (rs.next()) {
			l.setIdLivro(rs.getInt("idLivro"));
			l.setISBN(rs.getInt("ISBN"));
			l.setNomeLivro(rs.getString("nomeLivro"));
			l.setDataEntrada(rs.getDate("dataEntrada"));
			l.setNumPaginas(rs.getInt("numPaginas"));
			l.setEdicao(rs.getInt("edicao"));
			l.setVolume(rs.getInt("volume"));

		}
		ps.close();
		rs.close();
		return l;

	}
}
